package com.rybbaby.tss.platform.sysRole.entity;

import com.rybbaby.tss.platform.sysRoleGroup.entity.SysRoleGroup;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import org.hibernate.annotations.GenericGenerator;

import javax.persistence.*;
import java.io.Serializable;

/**
 * @description 角色
 * 
 * @author 谢进伟
 * 
 * @createDate 2016-11-11 上午1:55:16
 */
@Entity
@Table(name = "sys_role")
@DynamicUpdate(true)
@DynamicInsert(true)
public class SysRole implements Serializable {
	
	private static final long serialVersionUID = 61099677369954L;
	
	/** 主键 **/
	private String id;
	/**
	 * 所属分组id
	 **/
	private String groupId;
	/** 角色名称 **/
	private String roleName;
	/** 创建人Id **/
	private String createUserId;
	/** 创建时间 **/
	private java.sql.Timestamp createTime;
	/** 是否禁用 **/
	private Boolean isForbidden;
	/** 是否可删除 **/
	private Boolean isCanDelete;
	/** 版本 **/
	private Integer version;
	/**
	 * 所属分组
	 **/
	private SysRoleGroup group;
	/**
	 * 方法: 取得所属分组
	 *
	 * @return SysFileGroup 所属分组
	 */
	@JoinColumn(name = "groupId", insertable = false, updatable = false)
	@ManyToOne(fetch = FetchType.LAZY, targetEntity = SysRoleGroup.class)
	public SysRoleGroup getGroup() {
		return this.group;
	}

	/**
	 * 方法: 设置所属分组
	 *
	 * @param group 所属分组
	 */
	public void setGroup(SysRoleGroup group) {
		this.group = group;
	}
	
	/**
	 * 方法: 取得主键
	 *
	 * @return java.lang.String 主键
	 */
	@Id
	@GeneratedValue(generator = "sys_roleIDGenerator" , strategy = GenerationType.AUTO)
	@GenericGenerator(name = "sys_roleIDGenerator" , strategy = "uuid")
	@Column(name = "id", nullable= false, length = 32)
	public String getId() {
		return this.id;
	}
	
	/**
	 * 方法: 设置主键
	 *
	 * @param id 主键
	 */
	public void setId(String id) {
		this.id = id;
	}


	/**
	 * 方法: 取得所属分组id
	 *
	 * @return java.lang.String 所属分组id
	 */
	@Column(name = "groupId", nullable= true, length = 25)
	public String getGroupId() {
		return this.groupId;
	}
	
	/**
	 * 方法: 设置所属分组id
	 *
	 * @param groupId 所属分组id
	 */
	public void setGroupId(String groupId) {
		this.groupId = groupId;
	}
	/**
	 * 方法: 取得角色名称
	 *
	 * @return java.lang.String 角色名称
	 */
	@Column(name = "roleName", nullable= true, length = 25)
	public String getRoleName() {
		return this.roleName;
	}

	/**
	 * 方法: 设置角色名称
	 *
	 * @param roleName 角色名称
	 */
	public void setRoleName(String roleName) {
		this.roleName = roleName;
	}

	/**
	 * 方法: 取得创建人Id
	 *
	 * @return java.lang.String 创建人Id
	 */
	@Column(name = "createUserId", nullable= true, length = 32)
	public String getCreateUserId() {
		return this.createUserId;
	}

	/**
	 * 方法: 设置创建人Id
	 *
	 * @param createUserId 创建人Id
	 */
	public void setCreateUserId(String createUserId) {
		this.createUserId = createUserId;
	}
	
	/**
	 * 方法: 取得创建时间
	 *
	 * @return java.sql.Timestamp 创建时间
	 */
	@Column(name = "createTime", nullable= true, length = 19)
	public java.sql.Timestamp getCreateTime() {
		return this.createTime;
	}
	
	/**
	 * 方法: 设置创建时间
	 *
	 * @param createTime 创建时间
	 */
	public void setCreateTime(java.sql.Timestamp createTime) {
		this.createTime = createTime;
	}
	
	/**
	 * 方法: 取得是否禁用
	 *
	 * @return java.lang.Boolean 是否禁用
	 */
	@Column(name = "isForbidden", nullable= true, length = 1)
	public Boolean getIsForbidden() {
		return this.isForbidden;
	}
	
	/**
	 * 方法: 设置是否禁用
	 *
	 * @param isForbidden 是否禁用
	 */
	public void setIsForbidden(Boolean isForbidden) {
		this.isForbidden = isForbidden;
	}
	
	/**
	 * 方法: 取得是否可删除
	 *
	 * @return java.lang.Boolean 是否可删除
	 */
	@Column(name = "isCanDelete", nullable= true, length = 1)
	public Boolean getIsCanDelete() {
		return this.isCanDelete;
	}
	
	/**
	 * 方法: 设置是否可删除
	 *
	 * @param isCanDelete 是否可删除
	 */
	public void setIsCanDelete(Boolean isCanDelete) {
		this.isCanDelete = isCanDelete;
	}
	
	/**
	 * 方法: 取得版本
	 *
	 * @return java.lang.Integer 版本
	 */
    @Version
	@Column(name = "version", nullable= true, length = 11)
	public Integer getVersion() {
		return this.version;
	}
	
	/**
	 * 方法: 设置版本
	 *
	 * @param version 版本
	 */
	public void setVersion(Integer version) {
		this.version = version;
	}
}